package fr.upstlse.glre.client.administration.actualite.action;

import java.util.Date;

import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.EspaceAdministration;
import fr.upstlse.glre.client.administration.actualite.ModificationActualiteWindow;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.actualite.ActualiteVOGWT;
import fr.upstlse.glre.client.vo.user.UserVOGWT;
import fr.upstlse.glre.client.widgets.fields.ActualiteFields;

public class ModifyActualiteAction extends SelectionListener<ComponentEvent> {
	ActualiteFields actualiteFields;

	public ModifyActualiteAction(ActualiteFields pActualiteFields) {
		super();
		actualiteFields = pActualiteFields;
	}
	@Override
	public void componentSelected(ComponentEvent pCe) {
		ActualiteVOGWT lActualiteVOGWT = new ActualiteVOGWT();
		lActualiteVOGWT.setId(new Long(actualiteFields.getId().getValue()));
		lActualiteVOGWT.setTitre(actualiteFields.getTitre().getValue());
		lActualiteVOGWT.setContenu(actualiteFields.getContenu().getValue());
		lActualiteVOGWT.setDate(new Date());
		long lUserId = EspaceAdministration.getInstance().getUser().getId();
		UserVOGWT lUserVOGWT = new UserVOGWT();
		lUserVOGWT.setId(lUserId);
		lActualiteVOGWT.setUserVOGWT(lUserVOGWT);

		final MessageBox lWaitMessageBox = MessageBox.progress("Information",
				"Modification de l'actualité" + lActualiteVOGWT.getTitre(),
				"modification en cours...");
		AsyncCallback<Object> lCallback = new AsyncCallback<Object>() {
			public void onFailure(Throwable pCaught) {
				lWaitMessageBox.hide();
				MessageBox.alert("Erreur UpdateActualite", pCaught.getMessage(),
						null);
			}

			public void onSuccess(Object pResult) {
				lWaitMessageBox.hide();
				Info.display("Information",
						"Actualité modifiée avec succès", "");
				ModificationActualiteWindow.closeCurrentWindow();
			}
		};
		ControlerUtil.getControlerServiceAsyncInstance().updateActualite(lActualiteVOGWT, lCallback);
	}

}
